﻿// See https://aka.ms/new-console-template for more information
using System.Text;
using TouchSocket.Core;
using TouchSocket.NamedPipe;
using TouchSocket.Sockets;

var client = new NamedPipeClient();
client.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器，此时已经创建管道，但是还未建立连接
client.Connected = (client, e) => {

    NamedPipeClient c = (NamedPipeClient)client;
    Console.WriteLine("成功连接到服务器");

    return EasyTask.CompletedTask;
};//成功连接到服务器
client.Disconnecting = (client, e) => { return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。
client.Disconnected = (client, e) => {

    Console.WriteLine("客户端断开连接");
    
    return EasyTask.CompletedTask; };//从服务器断开连接，当连接不成功时不会触发。
client.Received = (client, e) =>
{
    //从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。
    string mes = Encoding.UTF8.GetString(e.ByteBlock.Buffer, 0, e.ByteBlock.Len);
    client.Logger.Info($"客户端接收到信息：{mes}");
    return EasyTask.CompletedTask;
};

//载入配置
client.Setup(new TouchSocketConfig()
    .SetPipeName("TouchSocketPipe")//设置命名管道名称
    .ConfigureContainer(a =>
    {
        // a.AddConsoleLogger();//添加一个日志注入

    }).ConfigurePlugins(a => {


        a.UseNamedPipeReconnection(-1, false, 1000, s => {

            Console.WriteLine("重连成功");

        });
    
    })
    
    
    );

client.Connect();//调用连接，当连接不成功时，会抛出异常。

 

client.Logger.Info("客户端成功连接");

client.Send("RRQM");


Console.ReadKey();
